#pragma once

std::string wstr_to_str(const std::wstring &in);
std::wstring str_to_wstr(const std::string &in);

//=================================================================================================
// wstr_to
//=========

template <class T> static T wstr_to(const std::wstring &str)
{
	std::wstringstream stream(str);
	T v;
	stream >> v;
	return v;
}

//=================================================================================================
// str_to
//=========

template <class T> static T str_to(const std::string &str)
{
	std::stringstream stream(str);
	T v;
	stream >> v;
	return v;
}

//=================================================================================================
// to_wstr
//=========

template <class T> static std::wstring to_wstr(const T &what)
{
	std::wstringstream stream;
	stream << what;
	return stream.str();
}

//=================================================================================================
// to_str
//=========

template <class T> static std::string to_str(const T &what)
{
	std::stringstream stream;
	stream << what;
	return stream.str();
}